package priv.mill.base;

public class Worker04 {
	public static void main(String[] args) {

		// 从控制台输入 × × × ×年× ×月，从控制台输出该月日历
		// （1900年1月1日是星期一）

		int year = 2017;
		int month = 12;
		int days = 0;
		for (int i = 1900; i < year; i++) {

			// 1、判断该年是否是闰年
			// 能被4整除但不能被100整除；或者能被400整除
			boolean isRun = (i % 4 == 0 && i % 100 != 0) || i % 400 == 0;
			if (isRun)
				days += 366;
			else {
				days += 365;
			}
		}

		for (int i = 1; i < month; i++) {
			// 2、计算该月天数
			// 大：1、3、5、7、8、10、12
			// 小：4、6、9、11
			// 平月：闰年29，平年28
		days = getMonthDays(year, days, i);
		}

		int weekDay = days % 7 + 1;

		int curMonth = 0;
		// 计算当月有多少天
		switch (month) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			curMonth = 31;
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			curMonth = 30;
			break;
		case 2:
			boolean isRun = (year % 4 == 0 && year % 100 != 0)
					|| year % 400 == 0;
			if (isRun) {
				curMonth = 29;
			} else {
				curMonth = 28;
			}
			break;
		default:
			break;
		}

		for (int i = 0; i < weekDay; i++) {
			System.out.print("\t");
		}
		for (int i = 1; i <= curMonth; i++) {

			System.out.print(i);
			if ((i + weekDay) % 7 == 0) {
				System.out.println();
			} else {
				System.out.print("\t");

			}

		}

		// 3、计算该月第一天是星期几
		// 1900年1月1日是星期一
		// 距离这一天有多少天
		// 循环：如果闰年366
		// else：365天

		// 201711-119
		// for(1-11){
		//
		// }
		// 4、按格式输出该月日历

	}

	private static int getMonthDays(int year, int days, int i) {
		switch (i) {
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				days += 31;
				break;
			case 4:
			case 6:
			case 9:
			case 11:
				days += 30;
				break;
			case 2:
				boolean isRun = (year % 4 == 0 && year % 100 != 0)
						|| year % 400 == 0;
				if (isRun) {
					days += 29;
				} else {
					days += 28;
				}
				break;
			default:
				break;
			}
		return days;
	}

	public static void test() {
		// 游戏随机给出一个0-99的数字然后让你猜是什么数字。
		// int num;//
		// int count;
		// int jNum=can.nextInt();
		// while (num!=jNum) {
		//
		// if(count++>7){
		// // 小同志，尚需努力啊？
		// break;
		// }
		// jNum=can.nextInt();
		// }
		// 你可以随便猜，游戏会提示太小还是太大，
		// 从而缩小结果范围，经过几次猜测与提示后，
		// 最终推出答案。在游戏过程中结束后公布结果。
		// 1 次 显示你太有才了2~6次这么快就猜出来了，
		// 很聪明么？大于7猜了半天才猜了来，小同志，尚需努力啊？
	}
}
